package presentation;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import dao.ComisionDAO;
import dao.EmpleadoDAO;
import dao.PremioDAO;
import dao.ProductoDAO;
import model.Comision;
import model.Empleado;
import model.Premio;
import model.Producto;


/**
 * Servlet implementation class RegistrosInicialesServlet
 */
@WebServlet("/RegistrosInicialesServlet")
public class RegistrosInicialesServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public EmpleadoDAO empleadoService = null;	
	public ProductoDAO productoService = null;
	public ComisionDAO comisionService = null;
	public PremioDAO premioService = null;
	@Override
	public void init(ServletConfig config) {
		WebApplicationContext context = WebApplicationContextUtils
				.getRequiredWebApplicationContext(config.getServletContext());

		this.empleadoService = (EmpleadoDAO) context.getBean(EmpleadoDAO.class);
		this.productoService = (ProductoDAO) context.getBean(ProductoDAO.class);
		this.comisionService = (ComisionDAO) context.getBean(ComisionDAO.class);
		this.premioService = (PremioDAO) context.getBean(PremioDAO.class);

	}	
    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegistrosInicialesServlet() {
        super();
        
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String mensaje = null;
		try{
			Empleado empleado = new Empleado(40453666, "Enrique", "Dubert", "Vendedor","admin","admin");
			if (!this.empleadoService.getById(empleado.getDni()).equals(null)){
				System.out.println("Ya se registraron.");
				mensaje =  "No se puede volver a cargar los datos de nuevo..";		

			}
		}
		catch (Exception e){
			
			Empleado vendedor1 = new Empleado(40453666, "Enrique", "Dubert", "Vendedor","vendedor1","vendedor1");
			Empleado vendedor2 = new Empleado(25333754, "Damian", "Roman", "Vendedor","vendedor2","vendedor2");
			Empleado vendedor3 = new Empleado(10985348, "Jesica", "L'oreal", "Vendedor","vendedor3","vendedor3");
			Empleado vendedor4 = new Empleado(36554985, "Roberto", "Moreno", "Vendedor","vendedor4","vendedor4");
			Empleado vendedor5 = new Empleado(55623359, "Jessica", "Alba", "Vendedor","vendedor5","vendedor5");

			Empleado recursoshumanos1 = new Empleado(33246955, "John", "Dough", "Recursos Humanos","recursos1","recursos1");
			Empleado recursoshumanos2 = new Empleado(22368955, "Dilbert", "Adams", "Recursos Humanos","recursos2","recursos2");
			Empleado administrador1 = new Empleado(9003357, "Luciano", "Villavicencio", "Administrador","admin","admin");
			

			
			this.empleadoService.save(vendedor1);
			this.empleadoService.save(vendedor2);
			this.empleadoService.save(vendedor3);
			this.empleadoService.save(vendedor4);
			this.empleadoService.save(vendedor5);
			this.empleadoService.save(recursoshumanos1);
			this.empleadoService.save(recursoshumanos2);
			this.empleadoService.save(administrador1);
					
			Producto producto1 = new Producto("Coca Cola", 22, 0,2);
			Producto producto2 = new Producto("Papas fritas", 12, 0,3);
			Producto producto3 = new Producto("Galletitas", 5, 0,2);
			Producto producto4 = new Producto("Vino tinto", 55, 0,5);
			Producto producto5 = new Producto("Agua mineral", 17, 0,6);

			this.productoService.save(producto1);
			this.productoService.save(producto2);
			this.productoService.save(producto3);
			this.productoService.save(producto4);
			this.productoService.save(producto5);
			
			Comision comision1 = new Comision("Comision por ventas - Entre 1 y 5 ventas",200);
			Comision comision2 = new Comision("Comision por ventas - Entre 6 y 10 ventas",400);
			Comision comision3 = new Comision("Comision por ventas - Entre 11 y 15 ventas",700);
			Comision comision4 = new Comision("Comision por ventas - Mas de 15 ventas",1000);
			
			this.comisionService.save(comision1);
			this.comisionService.save(comision2);
			this.comisionService.save(comision3);
			this.comisionService.save(comision4);

			
			
			Premio premio1 = new Premio("Mejor vendedor del mes",2000);
			Premio premio2 = new Premio("Producto en particular",1000);
			
			this.premioService.save(premio1);
			this.premioService.save(premio2);
			
			mensaje =  "Datos cargados exitosamente!";		

		}

		
	
	
		request.getSession().setAttribute("MensajeIndice", mensaje);
		response.sendRedirect("index.jsp");
	}

}
